\chapter{Application serveur}

	\section{Généralités}

		Le logiciel serveur a pour rôle de servir de relai entre les téléphones. Il est programmé en java
		et n'utilise rien de particulier.

		Le logiciel serveur communique avec la base de données, et renvoi les données sous forme d'objets
		métier à l'application android via une socket et la sérialization.

	    Afin de communiquer avec la base de données, le connecteur \verb+mysql-connector-java-5.0.8-bin.jar+ est requis.
	    Il se trouve dans le dossier lib.

		Les fonctions et classes sont documentées en javadoc, nous n'allons donc pas reprendre
		ici chaque méthode pour expliquer le fonctionnement mais reprendre l'architecture globale
		du projet.




	\section{Présentation des packages et fichiers}

		Le serveur est assez simple et est donc regroupé dans un seul package qui contient les fichiers suivant :

			\begin{description}

				\item[Launcher :]	La classe qui lance le programme (le main), elle se contente d'instancier un \verb+Server+.

				\item[Server :]		La classe serveur, elle attend des connexions des clients et les garde en mémoire (chaque
								connexion est associée à son identifiant). {\bf C'est
								dans cette classe que l'on peut définir le port sur lequel on attend les connexions}.

				\item[ClientThread :] Pour chaque client connecté on instancie un \verb+ClientThread+. Ce \verb+thread+ gère la connexion
								avec le client, c'est à dire qu'il peut recevoir et envoyer des messages au téléphone qui est
								connecté.

				\item[Commande :]	Cette classe sert à simplifier l'administration du serveur en ajoutant la possibilité d'entrer des
								commandes dans la console. Pour l'instant les commandes sont :
								\begin{description}
									\item[ls :]		Affiche la liste des clients connectés
									\item[quit :]	Quitte le serveur en fermant toutes les connexions
								\end{description}


			\end{description}


     Le classe \verb+Database+ contient les informations de connexion à la base de données.

     La classe \verb+RetreiveDatas+ contient la méthode qui va extraire les données de la base
     pour les faire suivre à un client. On peut détailler les grandes phases :

     \begin{enumerate}
        \item On récupère la liste des user ecarome
        \item On sépare les médecins et les patients
        \item On créé la liste des patients pour chaque médecin
        \item On récupère les sensors et leur valeur pour chaque patient
     \end{enumerate}


